package com.zpark.se.io.output;

import java.io.FileDescriptor;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

/**
 * 在 Java 中所有输出流类都是 OutputStream 抽象类（字节输出流）和 Writer
 * 抽象类（字符输出流）的子类。其中 OutputStream 类是字节输出流的抽象类，是所
 * 有字节输出流的父类
 *
 * FileOutputStream类是OutputStream类的子类，用于将数据写入文件。
 * 常用构造方法：
 *      1、FileOutputStream(String name)
 *          创建一个文件输出流，参数 name 指定目标文件的文件路径信息
 */
public class Demo01 {
    public static void main(String[] args) throws Exception {
        // 声明路径
        String path = "src/com/zpark/se/io/output/f/a.txt";

        // 创建文件输出流对象
        FileOutputStream out = new FileOutputStream(path);

        // 常用方法

        /*
            getFD()：返回文件输出流关联的 FileDescriptor 对象
         */
        FileDescriptor fd = out.getFD();
        /*
            valid()：判断文件输出流是否还关联有效文件
         */
        boolean valid = fd.valid();
        /*
            sync()：强制将缓冲输出流中的数据刷新到目标文件
         */
        fd.sync();

        /*
            write(int b)：将参数 b 转换为字节，并将其写入输出流中
         */
        out.write(10);

        /*
            write(byte[] b)：将参数 b 中的所有字节写入输出流中
         */
        out.write(new byte[2]);

        /*
            write(byte[] b, int off, int len)：将参数 b 中从索引 off 开始，大小为len
         */
        out.write(new byte[2], 0, 2);


        /*
            close()：关闭输出流，释放资源
         */
        out.close();

    }
}
